﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Projeto
{
    public partial class FormTituloReceber : Form
    {
        //VARIAVEIS GLOBAIS
        private PoolConexoes conexoes = new PoolConexoes();
        private ValidaFormulario valida = new ValidaFormulario();

        public FormTituloReceber()
        {
            InitializeComponent();
        }

        //METODO VALIDA QUAL METODO CHAMAR (ATUALIZAR OU CADASTRAR) TITULO
        private void buttonCadastrar_Click(object sender, EventArgs e)
        {
            if (buttonCadastrar.Text.Equals("Cadastrar"))
            {
                cadastrarTitulo();
            }
            else if (buttonCadastrar.Text.Equals("Alterar"))
            {
                updateTitulo();
            }
        }

        //METODO CADASTRA TITULO
        public void cadastrarTitulo()
        {
            String codFornecedor = "";

            if (!cbFornecedor.Text.Equals(""))
            {
                codFornecedor = conexoes.getCodFornecedor(cbFornecedor.Text);
            }

            TituloReceber titulo = new TituloReceber();
            titulo.CodTitulo = textBoxCodTitulo.Text;
            titulo.Serie = textBoxSerie.Text;
            titulo.Descricao = textBoxDescTitulo.Text;
            titulo.DtVencimento = "" + dtVencimento.Value;
            titulo.CodFornecedor = codFornecedor;
            titulo.Situacao = cbSituacao.Text;
            titulo.Observacao = textBoxObsTitulo.Text;
            titulo.Valor = textBoxValorTitulo.Text;

            ArrayList mensagens = valida.validaTituloReceber(titulo);

            if (mensagens.Count > 0)
            {

                String mensagem = (String)mensagens[0];
                MessageBox.Show(mensagem);

            }
            else
            {

                try
                {
                    bool insert = conexoes.inserTituloReceber(titulo);

                    if (insert)
                    {
                        MessageBox.Show("Titulo salvo com sucesso.");
                        buttonCadastrar.Text = "Alterar";
                        limpa();
                    }
                    else
                    {
                        MessageBox.Show("Erro ao cadastro Titulo.");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao cadastro Titulo.");
                }

            }
        }

        //METODO PARA CARREGAR FORNECEDOR
        private void carregarFornecedor()
        {
            ArrayList fornecedores = conexoes.getFornecedores();

            if (fornecedores.Count > 0)
            {
                for (int i = 0; i < fornecedores.Count; i++)
                {
                    Fornecedor fornecedor = (Fornecedor)fornecedores[i];
                    cbFornecedor.Items.Add(fornecedor.RazaoSocial);
                }
            }

            cbFornecedor.Text = "";
        }


        //METODO PARA LIMPAR FORMULARIO
        public void limpa()
        {
            textBoxCodTitulo.Text = "";
            textBoxSerie.Text = "";
            textBoxDescTitulo.Text = "";
            cbSituacao.Text = "";
            cbFornecedor.Items.Clear();
            textBoxObsTitulo.Text = "";
            textBoxValorTitulo.Text = "";

            carregarFornecedor();

            buttonCadastrar.Text = "Cadastrar";
            textBoxCodTitulo.Enabled = true;
            textBoxSerie.Enabled = true;
            cbSituacao.Enabled = true;
            buttonBaixar.Enabled = false;
        }

        private void buttonBaixar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Deseja realmente baixar o Título?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) baixarTitulo();
        }

        private void buttonExcluir_Click(object sender, EventArgs e)
        {
            if (!textBoxCodTitulo.Text.Equals(""))
            {
                if (MessageBox.Show("Deseja realmente excluir Titulo?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) excluirTitulo();
            }
        }

        //METODO PARA EXCLUIR TITULO
        public void excluirTitulo()
        {
            if (!textBoxCodTitulo.Text.Equals(""))
            {
                bool isExcluido = conexoes.excluirTituloReceber(textBoxCodTitulo.Text);

                if (isExcluido)
                {
                    MessageBox.Show("Titulo excluido com sucesso.");
                }
                else
                {
                    MessageBox.Show("Erro ao excluir Titulo.");
                }
            }
        }

        private void buttonLimpar_Click(object sender, EventArgs e)
        {
            limpa();
        }

        private void textBoxSerie_Leave(object sender, EventArgs e)
        {
            if (!textBoxCodTitulo.Text.Equals(""))
            {
                if (!textBoxSerie.Text.Equals(""))
                {
                    carregarTitulo();
                }
            }
        }

        private void FormTituloReceber_Load(object sender, EventArgs e)
        {
            carregarFornecedor();
        }

        //METODO CARREGA TITULO
        private void carregarTitulo()
        {
            TituloReceber titulo = conexoes.getTituloReceber(textBoxCodTitulo.Text, textBoxSerie.Text);

            if (titulo != null)
            {

                textBoxDescTitulo.Text = titulo.Descricao;
                cbSituacao.Text = titulo.Situacao;
                textBoxObsTitulo.Text = titulo.Observacao;
                textBoxValorTitulo.Text = titulo.Valor;

                Fornecedor fornecedor = conexoes.getFornecedor(titulo.CodFornecedor);

                if (fornecedor != null)
                {
                    cbFornecedor.Text = fornecedor.RazaoSocial;
                }

                if (titulo.Situacao.Equals("Pago"))
                {
                    cbSituacao.Enabled = false;
                    buttonBaixar.Enabled = false;
                }
                else if (titulo.Situacao.Equals("Em Aberto"))
                {
                    buttonBaixar.Enabled = true;
                }

                buttonCadastrar.Text = "Alterar";
                textBoxCodTitulo.Enabled = false;
                textBoxSerie.Enabled = false;



            }

        }

        //METODO ATUALIZA TITULO
        private void updateTitulo()
        {

            String codFornecedor = "";

            if (!cbFornecedor.Text.Equals(""))
            {
                codFornecedor = conexoes.getCodFornecedor(cbFornecedor.Text);
            }

            TituloReceber titulo = new TituloReceber();
            titulo.CodTitulo = textBoxCodTitulo.Text;
            titulo.Serie = textBoxSerie.Text;
            titulo.Descricao = textBoxDescTitulo.Text;
            titulo.DtVencimento = "" + dtVencimento.Value;
            titulo.CodFornecedor = codFornecedor;
            titulo.Situacao = cbSituacao.Text;
            titulo.Observacao = textBoxObsTitulo.Text;
            titulo.Valor = textBoxValorTitulo.Text;

            ArrayList mensagens = valida.validaTituloReceber(titulo);

            if (mensagens.Count > 0)
            {

                String mensagem = (String)mensagens[0];
                MessageBox.Show(mensagem);

            }
            else
            {

                try
                {
                    bool insert = conexoes.updateTituloReceber(titulo);

                    if (insert)
                    {
                        MessageBox.Show("Titulo salvo com sucesso.");
                        buttonCadastrar.Text = "Alterar";
                        limpa();
                    }
                    else
                    {
                        MessageBox.Show("Erro ao alterar o Titulo.");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao alterar Titulo.");
                }

            }

        }

        //METODO PARA BAIXAR TITULO (SITUACAO 'PAGO')
        private void baixarTitulo()
        {
            String codFornecedor = "";

            if (!cbFornecedor.Text.Equals(""))
            {
                codFornecedor = conexoes.getCodFornecedor(cbFornecedor.Text);
            }

            TituloReceber titulo = new TituloReceber();
            titulo.CodTitulo = textBoxCodTitulo.Text;
            titulo.Serie = textBoxSerie.Text;
            titulo.Descricao = textBoxDescTitulo.Text;
            titulo.DtVencimento = "" + dtVencimento.Value;
            titulo.CodFornecedor = codFornecedor;
            titulo.Situacao = "Pago";
            titulo.Observacao = textBoxObsTitulo.Text;
            titulo.Valor = textBoxValorTitulo.Text;

            ArrayList mensagens = valida.validaTituloReceber(titulo);

            if (mensagens.Count > 0)
            {

                String mensagem = (String)mensagens[0];
                MessageBox.Show(mensagem);

            }
            else
            {

                try
                {
                    bool insert = conexoes.updateTituloReceber(titulo);

                    if (insert)
                    {
                        MessageBox.Show("Titulo salvo com sucesso.");
                        buttonCadastrar.Text = "Alterar";
                        limpa();
                    }
                    else
                    {
                        MessageBox.Show("Erro ao alterar o Titulo.");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao alterar Titulo.");
                }

            }
        }

    }
}
